/**
 * 
 */
package com.spider.silence.worker;

import com.spider.silence.downloader.MaLaDownLoader;
import com.spider.silence.output.*;
import org.apache.log4j.Logger;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.spider.silence.pool.MaLaDownLoaderPool;
import com.spider.silence.task.MaLaTask;
import com.spider.silence.task.manager.CommonTaskManager;
import com.spider.silence.utils.DateUtils;

import java.io.File;
import java.util.Map;

/**
 * @title MaLaWorker.java
 * @author liyuanguo
 * @time 2016年12月28日 上午11:32:17
 * @description 麻辣社区取下载器处理任务消费者
 * @version V1.0
 */
public class MaLaWorker implements Runnable{
	private Logger logger = Logger.getLogger(MaLaWorker.class);
	@Override
	public void run() {
		while(true&&!Thread.interrupted()){
			MaLaDownLoader downLoader=null;
			MaLaDownLoaderPool downLoaderPool=MaLaDownLoaderPool.getInstance();
			FileWriter writer = null;
			FileWriterPool writerPool =FileWriterPool.getInstance();
			try {
				downLoader=(MaLaDownLoader)downLoaderPool.fetchDownLoader(1000);
				MaLaTask task=(MaLaTask) CommonTaskManager.takeTask("mala",1000);
				if(null!=downLoader&&null!=task){
					JSONObject content =downLoader.crawlItem(task.getForumUrl());
					//System.out.println(content);
					String filePrefix="MaLa";//文件前缀
					JSONObject data=content.getJSONObject("data");
					if(null!=data&&!"".equals(data)&&data.size()>0) {
						long tsp = DateUtils.dateToTimestamp(DateUtils.parseDateTime(data.getString("publish_time"))).getTime();
						String user_id = data.getString("publish_user_id");
						String tid = data.getString("id");
						//writer = FTPWriterPool.getInstance().fetchWriter();
						writer= writerPool.fetchWriter();
						String fileName = filePrefix + "_" + tsp + "_" + user_id + "_" + tid;//平台名称（或者英文）_ 言论发布的时间戳 _ 发布用户的ID _ 言论的tid
						String publishDate = DateUtils.formatDate(DateUtils.parseDate(data.getString("publish_time"))).replace("-", "-");
						Map<String,File> map=downLoader.getFiles();
						writer.write("麻辣社区_speeches_" + publishDate, fileName, JSON.toJSONString(content, SerializerFeature.BrowserCompatible),map);
					}
				}
			} catch (Exception e) {
				logger.error(e.getMessage(),e);
				continue;
			}finally {
				if(null!=downLoader){
					downLoaderPool.releaseDownLoader(downLoader);
				}
				if(null!=writer){
					writerPool.releaseWriter(writer);
				}
			}
		}
	}
}
